import Vue from 'vue';
import router from "./router";
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import './assets/styles/font.css';
import App from './App.vue';
import store from "./store"

//引入样式
import "./assets/styles/el-reset.css"
import "./assets/styles/base.css"

//引入iconfont样式
import './assets/iconfont/iconfont.css'

//引入subMenu组件
import qfSubMenu from "qf-sub-menu"

//引入nprogress进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

//全局引入
Vue.use(ElementUI);
Vue.use(qfSubMenu);

// Vue.config.productionTip = false

//路由前置钩子（导航守卫）
router.beforeEach( ( to,from,next ) => {
  NProgress.set(0.99)           //设置一开始进度条的显示长度
  //用户登入之后，localStorage中有token
  let token = localStorage.getItem('ajaj-token');
  // console.log(to);
  if(token){
      //如果是注册页面或者登入页面，直接放行
      if(store.state.menuList.length == 0){
        //说明没有用户路由，触发action获取用户路由
        store.dispatch('FETCH_MENULIST')
        .then(()=>{
          next({ path: to.path }) //这里要注意，next里面要传参数即要进入的页面的路由信息，因为next传参数后，当前要进入的路由会被废止，转而进入参数对应的路由，虽然是同一个路由，这么做主要是为了确保addRoutes生效了。

        })
      }else{
        next()
      }
  }else{   //没token
    if( to.path === '/login' ){
        next()
    }else{   //访问的不是登入页，就要跳转到登入页
      next( { path: '/login' } )
    }
  }
} )

//使用路由后置钩子处理面包屑
router.afterEach((to,from) => {
  // console.log("后置钩子",to);
  let crumblist = to.matched.slice(1)
  console.log(crumblist);
  store.commit("SET_CRUMBS",crumblist);
  NProgress.done()
})

import recursionRouters from '@/utils/recursionRouters';

new Vue({
  router,
  store,
  render: h => h(App),
}).$mount('#app')
